package com.xbongbong.paas.pojo.vo;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.enums.clazz.PatternClass;
import com.xbongbong.paas.enums.clazz.SeparatorClass;
import com.xbongbong.paas.field.FieldAttrEntity;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.form.pojo.FieldEsIndexPoJo;
import com.xbongbong.pro.lowcodeconfig.pojo.vo.LowCodeConfigGetVO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author: wufeng
 * @date: 2018/8/13 17:28
 * @desrcption: 表单设计返回对象
 */
@Getter
@Setter
@ToString
public class FormGetVO extends BaseVO {

    private static final long serialVersionUID = -4489207181188297466L;

    private Long appId;


    private Long formId;

    /**
     * 表单属性
     */
    private FormEntityGetVO formAttr;
    /**
     * CRM简化版-表单控制
     */
    private FormSimpleSetVO formSimpleSet;
    /**
     * CRM简化版-字段控制
     */
    private FormExplainSimpleSetVo formExplainSet;
    /**
     * 是否启用镜像，0 / 1
     */
    private Integer isMirror;

    /**
     * 表单字段描述
     */
    private List<FieldAttrEntity> explainList;

    /**
     * 字段描述id
     */
    private Long formExplainId;

    private Map<String, FieldEsIndexPoJo> fieldMap;

    private Map<String, FieldEsIndexPoJo> subFieldMap;

    /**
     * 正则列表
     */
    private List<PatternClass> patternList;
    /**
     * saas业务类型
     */
    private Integer businessType;

    /**
     * saas辅助字段
     */
    private JSONObject saasObj;

    /**
     * true：可以使用业务规则；false：不能使用业务规则
     */
    private Boolean useBusinessRule;

    /**
     * 是否能使用国际化语言切换
     */
    private Boolean multiLang;

    /**
     * 是否能使用国际化语言切换
     */
    private Integer isBusiness;
    /**
     *  true: 业务规则超过限制
     */
    private Boolean exceeded;

    private String message;

    /**
     * 低代码
     */
    private LowCodeConfigGetVO lowCodeConfig;
    /**
     * false：无开发权限 true：有开发权限
     */
    private Boolean devPermission;

    /**
     * true：可以使用字段映射；false：不能使用字段映射
     */
    private Boolean useFieldConvertRule;

    /**
     * 字段回收站attr
     */
    private Set<String> trashList;
    /**
     * 精线索，1为可以使用，0不能使用
     */
    private Integer isFineClue;

    /**
     * 是否支持阶段停留时长（读公司白名单配置） 1支持 0或null 不支持
     */
    private Integer isSupportStageStayTime;

    /**
     * 是否开通过断点续传的白名单用户
     */
    private Boolean isUploadLimitWhite;
}
